class Validate {
  static bool matchPhone({
    required String input,
  }) {
    return isMatch(
      input: input,
      pattern: r"^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$",
    );
  }

  static bool isEmail({
    required String input,
  }) {
    return isMatch(
      input: input,
      pattern: r"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",
    );
  }

  static bool matchPwd({
    required String input,
  }) {
    return isMatch(
        input: input,
        pattern:
            r'^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,16}$');
  }

  ///验证URL
  static bool isUrl(String value) {
    return RegExp(r"^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+").hasMatch(value);
  }

  ///验证身份证
  static bool isIdCard(String value) {
    return RegExp(r"\d{17}[\d|x]|\d{15}").hasMatch(value);
  }

  ///验证中文
  static bool isChinese(String value) {
    return RegExp(r"[\u4e00-\u9fa5]").hasMatch(value);
  }

  // 验证是否为纯字母
  static bool isLetter(String str) {
    final reg = RegExp(r"^[ZA-ZZa-z_]+$");
    return reg.hasMatch(str);
  }

  // 验证是否为数字
  static bool isNumber(String str) {
    final reg = RegExp(r"^[0-9_]+$");
    return reg.hasMatch(str);
  }

  //验证是否包含特殊字符
  static bool isHaveSpecialCharacters(String input) {
    final reg = RegExp(r'[`~!@#$%^&*()_+=|;:(){}'
        ',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？-]');
    return reg.hasMatch(input);
  }

  static bool isMatch({
    required String input,
    required String pattern,
  }) {
    var regExp = RegExp(pattern);
    return regExp.hasMatch(input);
  }
}
